// /* eslint-disable */
/************************************************************************************************
*   深圳市摩西尔电子有限公司 @版本所有@
*
*   此文件用于测试 /page/correction页面函数
*
* 修改:
*   1. 类型 : 创建
*      作者 : 李智明
*      时间 : 2021.04.26
*      内容 : 所有代码
************************************************************************************************/

/* exported tc_init_gamut */
/* exported tc_record_gaumt */
/* exported tc_send_gaumt */

/* global get_webui_sidebar_dom */
/* global get_webui_pop_leyer */
/* global $ */
/* global get_webui_pop_leyer_all */
/* global mc_sdk_param */


// eslint-disable-next-line valid-jsdoc
/************************************************************************************************
 * 类型:
 *    函数
 * 功能:
 *    判断是否打开第三层子页面 以防同时测试多个时数据不对
 * 参数:
 *    NA
 * 返回:
 *    NA

 * 例子:
 *    NA
 * 备注:
 *    NA
 * 修改:
 *    1. 类型 : 创建
 *       作者 : 李智明
 *       时间 : 2021-05-08
 *       内容 : 所有代码
************************************************************************************************/
function mc_correction_jungle_open_subpage() {
    var obj_ifrem = document.getElementById("tifrem_led");
    var obj_ifrem_sub = obj_ifrem.contentDocument.getElementById("iframe_subpage");
    var obj_ifrem_third_sub = obj_ifrem_sub.contentDocument.getElementsByClassName("layui-layer-iframe");

    if (0 === obj_ifrem_third_sub.length) {
        var mc_side_dom = get_webui_sidebar_dom();
        // 点击进入矫正界面

        $(mc_side_dom).contents().find("#mc_side_hub").click();
    }
}

/************************************************************************************************
 * 类型:
 *    函数
 * 功能:
 *    测试初始化色域模块渲染功能
 * 参数:
 *    @param { Promise<Function> } callback 回调
 * 返回:
 *    NA
 * 例子:
 *    NA
 * 备注:
 *    NA
 * 修改:
 *    1. 类型 : 创建
 *       作者 : 李智明
 *       时间 : 2021-04-26
 *       内容 : 所有代码
************************************************************************************************/
function tc_init_gamut(callback) {
    mc_correct_clear_iframe_page();
    mc_correction_jungle_open_subpage();

    // 获取矫正界面
    var mc_sub_page = get_webui_pop_leyer();

    // 添加定时器
    setTimeout(() => {
    // 获取界面数据 及应显示数据
        var arr_init_data = mc_get_right_data(0);
        var arr_page_data = mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.arr_gamut_data;

        var arr_right_equal = mc_compare_data(arr_init_data, arr_page_data);

        if (arr_right_equal[0]) {
            callback("1", "数据正确");
        } else {
            callback("0", arr_right_equal[1]);
        }
        return;
    }, 1000);
    return;
}


/************************************************************************************************
 * 类型:
 *    函数
 * 功能:
 *    测试色域模块记录功能
 * 参数:
 *    @param { Promise<Function> } callback 回调
 * 返回:
 *    NA
 * 例子:
 *    NA
 * 备注:
 *    NA
 * 修改:
 *    1. 类型 : 创建
 *       作者 : 李智明
 *       时间 : 2021-04-26
 *       内容 : 所有代码
************************************************************************************************/
function tc_record_gaumt(callback) {
    mc_correct_clear_iframe_page();
    mc_correction_jungle_open_subpage();

    // 获取矫正界面
    var mc_sub_page = get_webui_pop_leyer();

    var obj_old_data = {
        arr_data: [],
        b_gaumt: false
    };

    var obj_new_data = JSON.parse(JSON.stringify(obj_old_data));

    // 点击进入矫正界面

    setTimeout(() => {
    // 修改色域颜色
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut1("", "0.6");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut2("", "0.1");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut3("", "0.2");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut4("", "0.7");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut5("", "0.3");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut6("", "0.4");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut7("", "0.8");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut8("", "0.45");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut9("", "0.48");

        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut_slider1.set_dom_val("0.6");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut_slider2.set_dom_val("0.1");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut_slider3.set_dom_val("0.2");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut_slider4.set_dom_val("0.7");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut_slider5.set_dom_val("0.3");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut_slider6.set_dom_val("0.4");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut_slider7.set_dom_val("0.8");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut_slider8.set_dom_val("0.45");
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.gamut_slider9.set_dom_val("0.48");

        // 修改色域开关
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.mc_switch_gamut("", true);
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.obj_gamut_switch.set_dom_val(true);
        obj_old_data.arr_data = ["0.6", "0.1", "0.2", "0.7", "0.3", "0.4", "0.8", "0.45", "0.48"];
        obj_old_data.b_gaumt = true;

        // 关闭子层界面
        mc_correct_clear_iframe_page();
        mc_correction_jungle_open_subpage();

        // 获取矫正界面

        setTimeout(() => {
            // 获取iframe层
            var mc_sub_page_second = get_webui_pop_leyer();

            // 获取子页面dom
            var html_subpage = mc_sub_page_second.getElementsByTagName("iframe")[0].contentDocument;
            var arr_gaumt_clr = html_subpage.getElementsByClassName("mc_slider_thumb");
            var ui_len = arr_gaumt_clr.length;

            obj_new_data.arr_data = [];

            for (var idx = 0; idx < ui_len; idx++) {
                obj_new_data.arr_data.push(arr_gaumt_clr[idx].innerText);
            }

            // 获取记录开关功能
            var b_open_type = html_subpage.getElementsByClassName("mc_checkbox_box ")[0].getAttribute("checkbox_select");

            if ("true" === b_open_type) {
                b_open_type = true;
            } else {
                b_open_type = false;
            }

            obj_new_data.b_gaumt = b_open_type;
            // if ("true" !== b_open_type) {
            //     callback("0", "开关记录功能失败");
            // }

            var arr_jungle = mc_compare_data(obj_new_data, obj_old_data);

            if (arr_jungle[0]) {
                callback("1", "数据正确");
            } else {
                callback("0", arr_jungle[1]);
            }
            return;
        }, 300);
    }, 300);
}

/************************************************************************************************
 * 类型:
 *    函数
 * 功能:
 *    测试色域模块发送功能
 * 参数:
 *    @param { Promise<Function> } callback 回调
 * 返回:
 *    NA
 * 例子:
 *    NA
 * 备注:
 *    NA
 * 修改:
 *    1. 类型 : 创建
 *       作者 : 李智明
 *       时间 : 2021-05-10
 *       内容 : 所有代码
************************************************************************************************/
function tc_send_gaumt(callback) {
    mc_correct_clear_iframe_page();
    mc_correction_jungle_open_subpage();

    // 获取矫正界面
    var mc_sub_page = get_webui_pop_leyer();

    var obj_page_data = {
        arr_list: [],
        b_gaumt: ""
    };

    setTimeout(() => {
    // 修改开关
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.mc_switch_gamut("", true);
        mc_sub_page.getElementsByTagName("iframe")[0].contentWindow.obj_gamut_switch.set_dom_val(true);


        // 获取界面数据
        var arr_guamt_clr_html = mc_sub_page.getElementsByTagName("iframe")[0].contentDocument.getElementsByClassName("mc_slider_thumb");
        var ui_len = arr_guamt_clr_html.length;

        for (var idx = 0; idx < ui_len; idx++) {
            obj_page_data.arr_list.push(arr_guamt_clr_html[idx].innerText);
        }

        var b_type = mc_sub_page.getElementsByTagName("iframe")[0].contentDocument.getElementsByClassName("mc_checkbox_box ")[0].getAttribute("checkbox_select");

        if ("true" === b_type) {
            b_type = true;
        } else {
            b_type = false;
        }
        obj_page_data.b_gaumt = b_type;

        // 获取第一个发送按钮
        var obj_send_btn = mc_sub_page.getElementsByTagName("iframe")[0].contentDocument.getElementsByClassName("icon-hardware-write")[0];
        // 打开硬件选择界面

        obj_send_btn.onclick();

        setTimeout(() => {
            // 获取硬件选择界面dom
            var mc_sub_page_card_select = get_webui_pop_leyer_all()[1];
            var mc_sub_page_html = mc_sub_page_card_select.getElementsByTagName("iframe")[0].contentDocument;
            var mc_sub_page_send_btn = mc_sub_page_html.getElementsByClassName("icon-hardware-write")[0];

            // 发送硬件选择数据
            mc_sub_page_send_btn.onclick();

            setTimeout(() => {
                var str_send_data = mc_correction_get_send_data_json();
                var obj_send_data = new mc_sdk_param();

                obj_send_data.set_param_clear();
                obj_send_data.set_json(str_send_data);

                var obj_data = JSON.parse(obj_send_data.get_json());
                var arr_send_list = [];
                var b_send_gaumt = false;

                if (0 < obj_data.PARAMS.length) {
                    // list
                    arr_send_list = obj_data.PARAMS[0].ATTRIBUTE[1].ATTR_VALUE.slice(1, -1).split(":");
                    // mode
                    b_send_gaumt = obj_data.PARAMS[0].ATTRIBUTE[0].ATTR_VALUE;

                    if ("1" === b_send_gaumt) {
                        b_send_gaumt = true;
                    }

                    if (b_send_gaumt !== obj_page_data.b_gaumt) {
                        callback("0", "开关参数错误");
                        return;
                    }

                    // 比较两个数组
                    var arr_jungle_send_list = mc_compare_data(arr_send_list, mc_parse_tab(obj_page_data.arr_list));

                    if (arr_jungle_send_list[0]) {
                        callback("1", "数据正确");
                    } else {
                        callback("0", arr_jungle_send_list[1]);
                    }
                } else {
                    callback("0", "未获取到下发数据,发送异常");
                }
            }, 10);
        }, 1000);


    // 点击发送
    }, 300);
}


/* -------------------------------------------------------------------公共处理方法----------------------------------------------------------------- */

/************************************************************************************************
 * 类型:
 *    函数
 * 功能:
 *    获取已存的发送数据
 * 参数:
 *    @param {Promise<Array>}  arr 表格数据

 * 返回：
 *   @returns {Promise<str>}    表达式 矫正数据
 * 修改:
 *   1. 类型 : 创建
 *      作者 : 李智明
 *      时间 : 2021.5.10
 *      内容 : 所有代码
 ************************************************************************************************/
function mc_correction_get_send_data_json() {
    var str_json = document.getElementById("tifrem_led").contentDocument.getElementById("iframe_subpage").contentWindow.g_str_test_data;

    return str_json;
}

/************************************************************************************************
 * 类型:
 *    函数
 * 功能:
 *    解析读取表格的颜色数据
 * 参数:
 *    @param {Promise<Array>}  arr 表格数据

 * 返回：
 *   @returns {Promise<str>}    表达式 矫正数据
 * 修改:
 *   1. 类型 : 创建
 *      作者 : 李智明
 *      时间 : 2021.5.10
 *      内容 : 所有代码
 ************************************************************************************************/
function mc_parse_tab(arr) {
    var arr_data = [arr[0], arr[4], arr[7], arr[1], arr[3], arr[8], arr[2], arr[5], arr[6]];

    // str_data = "(" + arr[0] + ":" + arr[4] + ":" + arr[7] + ":" + arr[1] + ":" + arr[3] + ":" + arr[8] + ":" + arr[2] + ":" + arr[5] + ":" + arr[6] + ")";

    return arr_data;
}


/************************************************************************************************
 * 类型:
 *    函数
 * 功能:
 *    提供每个测试功能的正确数据
 * 参数:
 *    @param { Promise<Number> } ui 测试功能参数
 * 返回:
 *    @return {Promise<Number/string/array>} 可能出现的参数
 * 例子:
 *    NA
 * 备注:
 *    参数值: 0->界面初始化矫正数据
 * 修改:
 *    1. 类型 : 创建
 *       作者 : 李智明
 *       时间 : 2021-04-26
 *       内容 : 所有代码
************************************************************************************************/
function mc_get_right_data(ui) {
    var return_data = null;

    switch (ui) {
    // 初始化数据
    case 0:
        return_data = ["1", "0", "0", "1", "0", "0", "1", "0", "0"];
        break;
        // case value:

        //     break;
        // case value:

        //     break;
        // case value:

        //     break;

    default:
        break;
    }

    return return_data;
}


/************************************************************************************************
 * 类型:
 *    函数
 * 功能:
 *    判断当前测试的数据是否正确
 * 参数:
 *    @param { Promise<Number/array/string> } old_data 旧数据
 *    @param { Promise<Number/array/string> } new_data 新数据
 * 返回:
 *    @return {Promise<arr_result>} 比较结果
 * 例子:
 *    NA
 * 备注:
 * 修改:
 *    1. 类型 : 创建
 *       作者 : 李智明
 *       时间 : 2021-04-26
 *       内容 : 所有代码
************************************************************************************************/
function mc_compare_data(old_data, new_data) {
    var arr_result = [true, ""];

    var str_type = Object.prototype.toString.call(old_data);
    // 判断数据类型

    switch (str_type) {
    // 数值
    case "[object Number]":
        if (old_data === new_data) {
            arr_result[0] = false;
            arr_result[1] = "结果数据与预想数据不一致";
        }
        break;
    // 字符串
    case "[object String]":
        if (old_data === new_data) {
            arr_result[0] = false;
            arr_result[1] = "结果数据与预想数据不一致";
        }
        break;
    // 数组
    case "[object Array]":
        var ui_old_len = old_data.length;
        var ui_new_len = new_data.length;

        // ui_new_len = 10;
        if (ui_old_len === ui_new_len) {
            for (var id = 0; id < ui_old_len; id++) {
                var str_old_val = old_data[id];
                var str_new_val = new_data[id];

                if (str_old_val !== str_new_val) {
                    arr_result[0] = false;
                    arr_result[1] = "结果数组与预想数组有数据不一致,在数据数组的第" + (id + 1) + "的位置";
                    break;
                }
            }
        } else {
            arr_result[0] = false;
            arr_result[1] = "结果数组与预想数组长度不一致";
        }
        break;
    // 对象
    case "[object Object]":
        var ui_len = old_data.arr_data.length;

        var b_old_type = old_data.b_gaumt;
        var b_new_type = new_data.b_gaumt;

        for (var idx = 0; idx < ui_len; idx++) {
            if (new_data.arr_data[idx] !== old_data.arr_data[idx]) {
                arr_result[0] = false;
                arr_result[1] = "结果数组与预想数组有数据不一致,在数据数组的第" + (idx + 1) + "的位置";
                break;
            }
        }

        if (b_old_type !== b_new_type) {
            arr_result[0] = false;
            arr_result[1] = "开关记录功能失败";
        }


        break;

    default:
        break;
    }


    return arr_result;
}


/************************************************************************************************
 * 类型:
 *    函数
 * 功能:
 *    清空所有子页面 和弹框
 * 参数:
 *    NA
 * 返回:
 *    NA
 * 例子:
 *    NA
 * 备注:
 *    NA
 * 修改:
 *    1. 类型 : 创建
 *       作者 : 李智明
 *       时间 : 2021-05-11
 *       内容 : 所有代码
************************************************************************************************/
function mc_correct_clear_iframe_page() {
    var obj_correct_iframe_top = document.getElementById("tifrem_led");
    var obj_correct_iframe_sub_main = obj_correct_iframe_top.contentDocument.getElementById("iframe_subpage");
    var obj_correct_iframe_child_page = obj_correct_iframe_sub_main.contentDocument.getElementsByClassName("layui-layer-iframe");

    var ui_iframe_page_cnt = obj_correct_iframe_child_page.length;

    // 提示弹框
    var arr_dialog_html = obj_correct_iframe_sub_main.contentDocument.getElementsByClassName("layui-layer-dialog");

    if (0 < arr_dialog_html.length) {
        obj_correct_iframe_sub_main.contentDocument.getElementsByClassName("layui-layer-dialog")[0].remove();
        obj_correct_iframe_sub_main.contentDocument.getElementsByClassName("layui-layer-shade")[0].remove();
    }
    for (var idx = 0; idx < ui_iframe_page_cnt; idx++) {
        obj_correct_iframe_child_page[0].remove();
        obj_correct_iframe_sub_main.contentDocument.getElementsByClassName("layui-layer-shade")[0].remove();
    }
}


/* -------------------------------------------------------------------公共处理方法----------------------------------------------------------------- */
